//
//  JRColorHelper.m
//  ikarosKit
//
//  Created by rui on 2024/10/22.
//

#import "JRColorHelper.h"

FOUNDATION_EXTERN_INLINE UIColor *kJRColorWithRGB(NSUInteger aRGB) {
    return [UIColor colorWithRed:((float)((aRGB & 0xFF0000) >> 16))/255.0 green:((float)((aRGB & 0xFF00) >> 8))/255.0 blue:((float)(aRGB & 0xFF))/255.0 alpha:1.0];
}

FOUNDATION_EXTERN_INLINE UIColor *kJRHexColorWithAlpha(NSString *hexString, CGFloat alpha) {
    if (![hexString isKindOfClass:NSString.class]) {
        return UIColor.clearColor;
    }
    NSString *cString = [[hexString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
    if ([cString length] < 6)
        return [UIColor blackColor];
    if ([cString hasPrefix:@"#"])
        cString = [cString substringFromIndex:1];
    if ([cString length] != 6)
        return [UIColor blackColor];
    NSRange range;
    range.location = 0;
    range.length = 2;
    NSString *rString = [cString substringWithRange:range];
    
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    
    return [UIColor colorWithRed:((float) r / 255.0f)
                           green:((float) g / 255.0f)
                            blue:((float) b / 255.0f)
                           alpha:alpha];
}

FOUNDATION_EXTERN_INLINE UIColor *kJRHexColor(NSString *hexString) {
    return kJRHexColorWithAlpha(hexString, 1.0);
}
